introduction to queue data structure